package ioc16;

import java.beans.PropertyEditorSupport;

/**
 * Author:shixiaojun@itany.com
 * Date:2022/3/7 15:48
 * Version:1.0-SNAPSHOT
 */
public class AddressEditorSupport extends PropertyEditorSupport {

    /**
     * 将一个简单值转换成对象
     * 对象没有在方法中体现出来
     * 所涉及的对象需要找Spring去处理
     * 当将简单值转换成对象的时候
     * 只需要将最终转换的对象交给Spring即可
     * setValue(Object obj):将转换后的对象交给Spring
     * @param text
     * @throws IllegalArgumentException
     */
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        // 我们无法将一个任意格式的字符串转换成指定的对象
        // 在做转换的时候,我们要对需要转换的简单值的格式做限制
        // 不同的对象对简单值格式要求不一致
        // 此处要求将一个简单值转换成Address
        // 则可以限制其格式为:xxx-yyy
        // 其中xxx表示省份,yyy表示城市
        try {
            String[] arr = text.split("-");
            Address address = new Address();
            address.setProvince(arr[0]);
            address.setCity(arr[1]);
            setValue(address);
        } catch (Exception e) {
            throw new IllegalArgumentException("地址格式有误,其格式必须为:省份-城市");
        }
    }

    /**
     * 将一个对象转换成简单值
     * 需要从Spring中获取需要转换的对象
     * getValue():从Spring中获取需要转换的对象
     * @return
     */
//    @Override
//    public String getAsText() {
//        return super.getAsText();
//    }
}
